
package com.jf.cloud.flow.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.flow.dto.FormDTO;
import com.jf.cloud.flow.model.Form;
import com.jf.cloud.api.order.vo.FormExcelParamVO;
import com.jf.cloud.flow.vo.FormExcelVO;
import com.jf.cloud.flow.vo.FormItemVO;
import com.jf.cloud.flow.vo.FormVO;

import java.util.List;

/**
 * 数据表格
 * @author zz
 */
public interface FormService {

    /**
     * 分页获取数据表格列表
     * @param pageDTO 分页参数
     * @param formParam 搜索参数
     * @return 数据表格列表分页数据
     */
    PageVO<Form> page(PageDTO pageDTO, FormDTO formParam);

    /**
     * 根据数据表格id获取数据表格
     * @param formId 数据表格id
     * @return 数据表格
     */
    Form getByFormId(Long formId);

    /**
     * 保存数据表格
     * @param form 数据表格
     */
    void save(Form form);

    /**
     * 更新数据表格
     * @param form 数据表格
     */
    void update(Form form);

    /**
     * 根据数据表格id删除数据表格
     * @param formId 数据表格id
     */
    void deleteById(Long formId);

    /**
     * 获取所有的表格选择指标的枚举对象
     * @param type 1:平台端  2：商家端
     * @param lang
     * @return
     */
    List<FormItemVO> getFormItem(Integer type, Integer lang);

    /**
     * 获取excel导出的列名
     * @param form
     * @return
     */
    FormExcelParamVO getExcelParam(Form form);

    /**
     * 获取导出列表
     * @param form
     * @param formExcelParamVO
     * @return
     */
    List<FormExcelVO> listExcel(Form form, FormExcelParamVO formExcelParamVO);

    /**
     * 获取推荐报表列表
     * @return
     */
    List<FormVO> getRecommendFormList();

    /**
     * 分页获取推荐报表
     * @param page
     * @param form
     * @return
     */
    PageVO<Form> getRecommendFormPage(PageDTO page, FormDTO form);

    /**
     * 清除缓存
     */
    void removeCache();
}
